lst = [1, 5, 2, 7, 4, 9]

def find_number(lst, sum_num):
    catch_set = set()
    for i in range(len(lst)):
        if i in catch_set:
            continue
        if lst[i] < sum_num:
            try:
                j = lst.index(sum_num-lst[i])
            except ValueError:
                j = None
            if j:
                catch_set.add(j)
                yield lst[i], lst[j]



print(list(find_number(lst, 7)))

# 实现的很好，但是in操作符可以尝试一下另外一种方式，例如差值判断。